Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Introducción a la computación distribuida (Presentacion de Power Point) (página 2)




Enviado por Pablo Turmero



Partes: 1, 2, 3

Monografias.com
Java es un lenguaje de programación orientado a objetos desarrollado por James Gosling en Sun Microsystems a comienzos de los 90
Los programas Java no se compilan a código nativo (código máquina)
El código fuente Java no se interpreta (no es un lenguaje de script)
El código Java se compila a bytecode (un código intermedio menos abstracto que el código fuente pero más abstracto que el código máquina)
El bytecode es único (no depende del hardware ni del sistema operativo)
Nociones sobre el lenguaje de programación Java
El bytecode es ejecutado por la Máquina Virtual Java. Hoy en día, lo más habitual es utilizar compilación JIT (Just-In-Time). El bytecode se compila a código nativo como paso previo a la ejecución
Los programas Java pueden ejecutar en cualquier plataforma sobre la que exista una JVM (Java Vírtual Machine)
Filosofía “Write once, run anywhere”
Por tanto, los programas Java son independientes de la plataforma

… digamos que sólo en teoría

Monografias.com
JVM (Java Virtual Machine): Software que virtualiza el entorno de ejecución. Es la parte que se ocupa de que una aplicación pueda ejecutar con independencia de la plataforma

JRE (Java Runtime Environment): Paquete de programas que permiten la ejecución de una aplicación Java. Incluye una JVM + una API
Dependiendo de la plataforma hardware, se han definido diferentes familias de APIs
JME (Java Platform Micro Edition: para entornos con recursos limitados
JSE (Java Platform Standard Edition): para ordenadores personales
JEE (Java Platform Enterprise Edition): para aplicaciones de empresa distribuidas

JDK (Java Development Kit): JRE + herramientas necesarias para desarrollar aplicaciones en el lenguaje Java (compiladores, depuradores, etc.)

Netbeans: IDE distribuido por Sun Microsystems para el desarrollo en Java
Eclipse: IDE para el desarrollo en Java distribuido como software libre

Java: Algo de jerga

Monografias.com
En Java hay tres tipos de programas: las aplicaciones, los applets y los servlets
Existen otros tipos de programas muy específicos (MIDlets, etc.) pero no los estudiaremos en este curso

Aplicaciones Java (Java stand-alone applications)
El programa se ejecuta como un proceso independiente
El flujo de ejecución debe comenzar siempre en un método estático con nombre main que se encuentre en una clase pública
Java: tipos de programas
public class HolaMundo{
public static void main(String[] args){
System.out.println(“Hola mundo!”);
}
}

Monografias.com
Java applets
El programa se ejecuta empotrado en otra aplicación (normalmente un navegador)
Debe existir una clase pública que extienda la clase Applet de la API estándar y redefina el método paint de la misma
El flujo de ejecución comienza en el método paint de la citada clase
El applet se descarga desde una máquina remota y se ejecuta en una máquina virtual local
Java: tipos de programas Cont.
import java.applet.Applet;
import java.awt.Graphics;

public class HelloWorld extends Applet {
public void paint(Graphics gc) {
gc.drawString("Hello, world!", 65, 95);
}
}

Monografias.com
Java servlets
El programa se ejecuta empotrado en otra aplicación (normalmente un servidor)
Se debe implementar la interfaz Servlet definida en la API Servlet
El servlet el un objeto que ejecuta en una máquina remota e interactúa con un proceso local mediante un protocolo de petición – respuesta
Java: tipos de programas Cont.
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter pw = response.getWriter();
pw.println(“Hello, world!");
pw.close();
}
}

Monografias.com
Toda clase pública está definida en un fichero con el mismo nombre que la clase
El compilador (javac) espera el nombre de un fichero como argumento
El intérprete (java) espera el nombre de una clase como argumento
Los ficheros fuente tienen extensión .java, los compilados (bytecode) .class
Java: Hola mundo
# vi HolaMundo.java
public class HolaMundo{
public static void main(String[] args){
System.out.println(“Hola mundo!”);
}
}
# javac HolaMundo.java
# ls
HolaMundo.java HolaMundo.class
# java HolaMundo
Hola mundo!

Monografias.com
Las clases y los objetos son los dos conceptos básicos de Java
Lleva algún tiempo comprender como manejarlas correctamente
Un objeto es una entidad que se puede manipular en un programa
Las clase son una definición de qué “cosas” tienen los objetos
Las “cosas” que puede tener un objeto son: atributos y métodos
Los atributos son variables tipadas
Los métodos son secuencias de instrucciones que actúan sobre los atributos
Los objetos son siempre instancias de una clase
Java: Clases y objetos
public class Persona{
private String nombre;
private String apellidos;
public Persona (String nombre, String apellidos){
this.nombre = nombre;
this.apellidos = apellidos;
}
public String getNombreCompleto(){
return nombre + “ “ + apellidos;
}

}

Monografias.com
Miembro = atributo o método
En Java, los miembros pueden ser de instancia o de clase
Un miembro de instancia está asociado a un objeto concreto de esa clase (cada objeto tiene su propio miembro)
Un miembro de clase está asociado a una clase (todos los objetos que sean instancia de esa clase comparten el mismo miembro)
A un miembro de instancia se accede precediéndolo del identificador de la instancia
A un miembro de clase se accede precediéndolo de un identificador de instancia o bien del nombre de la clase
Los miembros de clase se preceden de la palabra clave static
Java: Miembros estáticos
public class Alumno{
private static numAlumnos = 0;
}

Alumno.numAlumnos ++;
Alumno alumno = new Alumno();
System.out.println(“Hay “ + alumno.numAlumnos + “ alumnos”);

Monografias.com
En Java hay dos tipos de datos: objetos y tipos primitivos
Los tipos primitivos incluyen: int, float, double, byte, boolean, etc.
Para cada tipo primitivo existe una clase asociada (Integer-int, Float-float, etc.)
Desde Java 1.5 la conversión de tipos primitivos a sus “objetos” equivalentes es automática (mecanismo de autoboxing)
Las variables de tipo primitivo “contienen” su valor
Las variables de tipo “objeto” contienen una referencia al objeto
Por seguridad, hay objetos inmutables (no se pueden cambiar)
Los objetos de la clase String son inmutables
Java: Tipos
Persona p1 = new Persona(“Luis”, “López”);
Persona p2 = p1;
p2.setNombre(“Patata”);
System.out.println(p1.getNombreCompleto); //Imprime “Patata López”

int a = 22;
int b = a;
b = 3;
System.out.println(“a=” + a); //Imprime “a=22”

Monografias.com
En Java, las clases pueden extenderse mediante un mecanismo de herencia
class ClaseHija extends ClasePadre{…}
La clase hija “hereda” (posee) los atributos y métodos de la clase padre
La clase hija solo “ve” los atributos y métodos declarados con visibilidad de paquete, públicos o protegidos, pero no “ve” los privados
En Java, todas las clases heredan de la clase Object definida
En Java no se soportan herencia múltiple
Java: Herencia
class Empleado extends Persona {
public Empleado(String nombre, String apellidos){
super(nombre, apellidos);
}
public int sueldo;
}

Empleado e = new Empleado(“Pedro”, “González”);
System.out.println(e.getNombreCompleto);//Imprime “Pedro González”

Monografias.com
En Java, las interfaces proporcionan un conjunto de declaraciones de métodos
Las interfaces no proporcionan implementación, son solo declaración
Las clases pueden “implementar” una interfaz determinada, para ello, deben proporcionar una implementación de todos los métodos declarados en la interfaz
class MiClase implements MiInterfaz{…}
Las interfaces son muy útiles para crear abstracciones y reducir el acoplamiento entre clases
Java: Interfaces
public interface Coin {
public double unitsPerEuro();
}

public class Peseta implements Coin{
public double unitsPerEuro(){
return 166.3;
}

Peseta peseta = new Peseta();
Coin coin = peseta;

Monografias.com
En Java, las excepciones son un mecanismo utilizado para indicar que se ha producido un problema algún tipo de problema durante la ejecución
Las excepciones se “elevan” o “lanzan” ante situaciones de error o conflicto
throw new IOException(“El fichero no se encuentra”);
Una excepción “lanzada” rompe el flujo de ejecución del programa y le hace “saltar” hasta “el llamante” de manera recursiva
Las excepciones pueden manejarse en cualquier punto de la jerarquía de llamadas
Una excepción no manejada va progresando en la jerarquía de llamadas hasta que alcanza el programa principal (método main()) y se detiene el programa en curso
Java: Excepciones
try{
//código que puede elevar una excepción
}catch(TipoDeExcepción e){
//código a ejecutar en caso de excepción
}finally(){
//código que se ejecuta haya o no excepción
}

Monografias.com
En Java, existe el paquete como instrumento para organizar grandes proyectos
El espacio de nombres de paquete es jerárquico y compuesto por etiquetas separadas por puntos.
Para declarar que una clase está en un paquete, añadimos al comienzo del fichero
package nombre.de.paquete;
Para poder utilizar las clases (e interfaces) declaradas en un paquete sin necesidad de incluir el nombre completo del paquete, podemos utilizar imports
import java.io.*;
import mi.paquete.MiClase;

Java: Paquetes
package mi.paquete;

import java.io.*;
import java.lang.*; //importado por defecto en todos los ficheros

public class MiClase{
//definición de la clase
}

Monografias.com
Estas nociones básicas no son suficientes para “saber programar” en Java
Existen infinidad de libros y de documentación en Internet que pueden ser de ayuda para aprender o profundizar en las tecnologías Java

Libros:
Gay Horstmann, “Big Java”, John Wiley & Sons, 2002 (bueno para empezar)
Bruce Eckel, “Piensa en Java”, Prentice Hall, 2003

Tutoriales y libros en la web:
Java Programming en Wikibooks: http://en.wikibooks.org/wiki/Java_Programming
Thinking in Java 3rd Ed: http://www.mindview.net/Books/TIJ/
Página oficial de Java en Sun Microsystems: http://java.sun.com

Conocer los fundamentos del lenguaje es condición necesaria para poder desarrollar aplicaciones en Java, pero no suficiente … tarde o temprano hay que acudir a la especificación de la API estándar
http://java.sun.com/j2se/1.4.2/docs/api/ (Para Java 1.4.2)
http://java.sun.com/j2se/1.5.0/docs/api/index.html (Para Java 1.5)
… (Para Java 1.6)
Java: Hay que saber más.

Monografias.com
La computación distribuida parte de la base de programas que se ejecutan en múltiples ordenadores que se comunican mediante el intercambio de mensajes
Para poder enfrentarnos a la problemática de la computación distribuida hay que contar con conocimientos básicos de tres disciplinas

Sistemas operativos
Programas y procesos
Procesos e hilos
Concurrencia

Redes de ordenadores
Arquitectura de redes
Protocolos de nivel de red, de nivel de transporte y de nivel de aplicación
Tecnologías de red

Ingeniería del software
Abstracción
Programación procedimental Vs programación orientada a objetos
Patrones y arquitecturas
Modelado de aplicaciones
Disciplinas utilizadas en Computación Distribuida

Monografias.com
Definición de Programa Software
“Artefacto construido por un desarrollador utilizando alguna forma de lenguaje de programación”

Definición de Proceso
“Un programa que se ejecuta incluyendo: los valores actuales, la información de estado y los recursos utilizados por el sistema operativo para la ejecución del programa”

Un proceso es una entidad dinámica, solo existe cuando un programa se ejecuta
Un proceso atraviesa diferentes estados durante su ejecución
Programas y procesos
planificado
encolado
(Gp:) Inicio

(Gp:) Listo

(Gp:) Bloqueado

(Gp:) Ejecutando

(Gp:) Terminado

evento
espera
fin
Diagrama simplificado
de las transiciones de
estado de un proceso

Monografias.com
Definición de Computación Concurrente
“Ejecución simultánea de varias tareas computacionales que interactúan entre sí”

El término “Simultánea” debe ser entendido en sentido amplio: modelos paralelos, modelos de time-slicing, etc.

“Concurrency occurs when two or more execution flows are able to run simultaneously” — Edsger Dijkstra

Es necesario que haya interacción para que se considere que hay un “problema de concurrencia” en un entorno de computación

Las tareas pueden implementarse como programas separados (que ejecutan en procesos separados), o como procesos o hilos de ejecución creados por un solo programa.

¿Qué diferencia hay entre un proceso y un hilo?
Computación Concurrente

Monografias.com
Procesos
Los procesos son independientes
El proceso tiene una información de estado voluminosa
Los procesos tienen espacios de memoria separados (desde un proceso no se puede acceder a las variables de otro)
Los procesos poseen recursos de manera exclusiva (ficheros, sockets, etc.)
Dos procesos sólo pueden interactuar con intermediación del sistema operativo
Los cambios de contexto entre procesos son costosos y lentos

Hilos (pertenecientes al mismo proceso)
Un solo proceso puede tener múltiples hilos de ejecución
Todos estos hilos comparten la información de estado del proceso
Todos los hilos comparten los recursos del proceso (ficheros, sockets, etc.)
Cada hilo tiene una pequeña información adicional (pila, pc, registros)
Todos los hilos de un proceso comparten el mismo espacio de memoria
Los cambios de contexto entre hilos del mismo proceso son muy rápidos
Hilos de ejecución (threads) y procesos

Monografias.com
La computación distribuida requiere el uso intensivo de programación concurrente
Hay tres escenarios muy habituales

Procesos concurrentes ejecutados en múltiples ordenadores
Aparece en la mayor parte del software distribuidos
En cada ordenador (nodo) el software ejecuta como un proceso independiente
Los procesos interactúan sólo a través del intercambio de mensajes (red)

Procesos concurrentes ejecutados en un único ordenador
Aparece en ordenadores con capacidad multitarea (real o simulada)
Los procesos interactúan compartiendo recursos o por intercambio de mensajes

Programación concurrente dentro de un mismo proceso
Aparece cuando múltiples hilos ejecutan dentro de un mismo proceso
Todos los hilos comparten el espacio de memoria y los mismos recursos
Aparecen múltiples problemas asociados a la concurrencia
Son necesarios mecanismos de control de concurrencia dentro de un proceso
Concurrencia y computación distribuida

Monografias.com
Creación de hilos en Java
En Java, un mismo proceso puede tener múltiples hilos de ejecución
Creación de un nuevo hilo de ejecución en Java (método I)
Definimos una clase que extienda la clase Thread de la API estándar
Redefinición del método run() con el código que ejecutará el hilo
public class MiClaseHilo extends Thread{
public void run(){
..código a ejecutar en el hilo
}}
Lanzamos un nuevo hilo al invocar start() sobre una instancia de la clase
MiClaseHilo obj = new MiClaseHilo();
obj.start();
Creación de un nuevo hilo de ejecución en Java (método II)
Definimos una clase que implemente la interfaz Runnable
public class MiClaseHilo implements Runnable{
public void run(){ …
Lanzamos un hilo con una nueva instancia de la clase Thread
MiClaseHilo obj = new MiClaseHilo();
new Thread(obj).start();
Creación de hilos en Java

Partes: 1, 2, 3
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter